home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 11
/
CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso
/
cucd
/
programming
/
oberonv4
/
source
/
system
/
amigabsd.mod
(
.txt
)
< prev
next >
Wrap
Oberon Text
|
1996-07-15
|
5KB
|
182 lines
Syntax10.Scn.Fnt
Syntax10b.Scn.Fnt
MODULE AmigaBSD; (** 1996-07-15 RD *)
IMPORT SYSTEM, AmigaExec, Console;
CONST
bsdName*="bsdsocket.library"; minversion = 0;
bsdBase-: AmigaExec.LibraryPtr;
bsdVersion-: INTEGER;
termEntry: AmigaExec.TermEntry;
PROCEDURE -ReturnD0 04EH,05EH, 04EH,075H;
PROCEDURE accept*(s, adrPtr, adrlenPtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, adrPtr );
SYSTEM.PUTREG( 9, adrlenPtr );
SYSTEM.CALL( -48, bsdBase );
ReturnD0
END accept;
PROCEDURE bind*(s, adrPtr, adrlen: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, adrPtr );
SYSTEM.PUTREG( 1, adrlen );
SYSTEM.CALL( -36, bsdBase );
ReturnD0
END bind;
PROCEDURE close*(s: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.CALL( -78, bsdBase );
ReturnD0
END close;
PROCEDURE connect*(s, adrPtr, adrlen: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, adrPtr );
SYSTEM.PUTREG( 1, adrlen );
SYSTEM.CALL( -54, bsdBase );
ReturnD0
END connect;
PROCEDURE gethostbyaddr*(adrPtr, len, type: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 8, adrPtr );
SYSTEM.PUTREG( 0, len );
SYSTEM.PUTREG( 1, type );
SYSTEM.CALL( -216, bsdBase );
ReturnD0
END gethostbyaddr;
PROCEDURE gethostbyname*(namePtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 8, namePtr );
SYSTEM.CALL( -210, bsdBase );
ReturnD0
END gethostbyname;
PROCEDURE gethostname*(namePtr, namelen: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 8, namePtr );
SYSTEM.PUTREG( 0, namelen );
SYSTEM.CALL( -282, bsdBase );
ReturnD0
END gethostname;
PROCEDURE getpeername*(s, adr, adrlenPtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, adr );
SYSTEM.PUTREG( 9, adrlenPtr );
SYSTEM.CALL( -108, bsdBase );
ReturnD0
END getpeername;
PROCEDURE inetaddr*(cpPtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 8, cpPtr );
SYSTEM.CALL( -180, bsdBase );
ReturnD0
END inetaddr;
PROCEDURE ioctl*(s, cmd, argPtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 1, cmd );
SYSTEM.PUTREG( 8, argPtr );
SYSTEM.CALL( -114, bsdBase );
ReturnD0
END ioctl;
PROCEDURE listen*(s, backlog: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 1, backlog );
SYSTEM.CALL( -42, bsdBase );
ReturnD0
END listen;
PROCEDURE recv*(s, bufPtr, len, flag: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, bufPtr );
SYSTEM.PUTREG( 1, len );
SYSTEM.PUTREG( 2, flag );
SYSTEM.CALL( -78, bsdBase );
ReturnD0
END recv;
PROCEDURE recvfrom*(s, bufPtr, len, flags, fromPtr, fromlenPtr: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, bufPtr );
SYSTEM.PUTREG( 1, len );
SYSTEM.PUTREG( 2, flags );
SYSTEM.PUTREG( 9, fromPtr );
SYSTEM.PUTREG( 10, fromlenPtr );
SYSTEM.CALL( -72, bsdBase );
ReturnD0
END recvfrom;
PROCEDURE select*(nfds, readfdsPtr, writefdsPtr, exceptfdsPtr, timeoutPtr: LONGINT): LONGINT;
VAR Dummy: LONGINT;
BEGIN
Dummy:=0;
SYSTEM.PUTREG( 0, nfds );
SYSTEM.PUTREG( 8, readfdsPtr );
SYSTEM.PUTREG( 9, writefdsPtr );
SYSTEM.PUTREG( 10, exceptfdsPtr );
SYSTEM.PUTREG( 11, timeoutPtr );
SYSTEM.PUTREG( 1, Dummy );
SYSTEM.CALL( -126, bsdBase );
ReturnD0
END select;
PROCEDURE send*(s, bufPtr, len, flag: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, bufPtr );
SYSTEM.PUTREG( 1, len );
SYSTEM.PUTREG( 2, flag );
SYSTEM.CALL( -66, bsdBase );
ReturnD0
END send;
PROCEDURE sendto*(s, bufPtr, len, flags, toPtr, tolen: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 8, bufPtr );
SYSTEM.PUTREG( 1, len );
SYSTEM.PUTREG( 2, flags );
SYSTEM.PUTREG( 9, toPtr );
SYSTEM.PUTREG( 3, tolen );
SYSTEM.CALL( -60, bsdBase );
ReturnD0
END sendto;
PROCEDURE setsockopt*(s, level, optname, optvalPtr, optlen: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, s );
SYSTEM.PUTREG( 1, level );
SYSTEM.PUTREG( 2, optname );
SYSTEM.PUTREG( 8, optvalPtr );
SYSTEM.PUTREG( 3, optlen );
SYSTEM.CALL( -90, bsdBase );
ReturnD0
END setsockopt;
PROCEDURE socket*(af, type, protocol: LONGINT): LONGINT;
BEGIN
SYSTEM.PUTREG( 0, af );
SYSTEM.PUTREG( 1, type );
SYSTEM.PUTREG( 2, protocol );
SYSTEM.CALL( -30, bsdBase );
ReturnD0
END socket;
PROCEDURE OpenLib*();
TYPE LibraryPtr = POINTER TO AmigaExec.Library;
VAR lib : LibraryPtr;
BEGIN
bsdBase:=AmigaExec.OpenLibrary(bsdName,minversion);
IF bsdBase#0 THEN
lib:=SYSTEM.VAL(LibraryPtr,bsdBase);
bsdVersion:=lib.version;
ELSE
Console.Str("Can't open bsdsocket.library. Please start AmiTCP."); Console.Ln;
END;
END OpenLib;
PROCEDURE CloseLib*();
BEGIN
IF bsdBase#0 THEN AmigaExec.CloseLibrary( bsdBase ) END;
END CloseLib;
BEGIN
bsdBase:=0;
AmigaExec.Register(termEntry, CloseLib)
END AmigaBSD.